GitHub CLIでIssuesを日付絞りで取得してみる
GitHubは普段ブラウザベースで操作を行っているのですが、Issue一覧をコピーしてきての振り返りを行う場合にはブラウザベースだと中々手間がかかります。代わりにとGitHub REST APIを用いてみましたが、利用したtokenの発行アカウント由来のIssueに限定されると分かり、やむなくブラウザベースでのコピペに戻りました。
GitHub CLIをアップデートしたついでにと何か使えないかと調べてみた結果、期待した動作となりました。パラメータ指定で若干不便な感じもありましたが、対策も踏まえての使い方を書いてみます。macOS環境前提となります。
インストール手続き
以下の記事に従って操作することで完了します。
Issue一覧の取得
これ自体は特に特別な操作も要りません。
% gh issue list Showing 29 of 29 open issues in xxx/yyy #401 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX about 4 days ago #400 YYYYYYYYYYYYYYYYYYYYYYYYYYYY (refactor) about 7 days ago #395 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ (enhancement) about 9 days ago
コツはオプション指定にての絞り込みです。これはブラウザ上から行える操作と同一になります。
% gh issue list -h List and filter issues in this repository For more information about output formatting flags, see `gh help formatting`. USAGE gh issue list [flags] FLAGS -a, --assignee string Filter by assignee -A, --author string Filter by author -q, --jq expression Filter JSON output using a jq expression --json fields Output JSON with the specified fields -l, --label strings Filter by labels -L, --limit int Maximum number of issues to fetch (default 30) --mention string Filter by mention -m, --milestone number Filter by milestone number or `title` -S, --search query Search issues with query -s, --state string Filter by state: {open|closed|all} (default "open") -t, --template string Format JSON output using a Go template -w, --web Open the browser to list the issue(s) INHERITED FLAGS --help Show help for command -R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format EXAMPLES $ gh issue list -l "bug" -l "help wanted" $ gh issue list -A monalisa $ gh issue list -a @me $ gh issue list --web $ gh issue list --milestone "The big 1.0" $ gh issue list --search "error no:assignee sort:created-asc" LEARN MORE Use 'gh <command> <subcommand> --help' for more information about a command. Read the manual at https://cli.github.com/manual
日付指定でIssueを取得する
上記ヘルプのポイントは、EXAMPLESに日付指定例が含まれていないところです。ドキュメントに記載はされています。
option | detail |
---|---|
language:c# created:>2011-01-01 state:open |
C# で記述されたリポジトリの 2011 年より前に作成されたオープンな Issue にマッチします。 |
weird in:body updated:>=2013-02-01 |
2013 年 2 月以降に更新された、本文に「weird」という単語を含む Issue にマッチします。 |
ネックなのは、日付が固定指定になってしまうところです。そこで一工夫して実行時から数日遡ってのIssueを拾う形にします。
gh issue list --search "updated:>=`date -d "now 7days ago" "+%Y-%m-%d"`"
これで7日前から現在までのIssue一覧が取得できるようになります。
以下は更にMarkdownで整形したい場合の一例です。
% gh issue list --search "updated:>=`date -d "now 7days ago" "+%Y-%m-%d"`" | awk '{print "- [" $3 "](https://github.com/USER/REPONAME/issues/" $1 ")"}'
あとがき
コマンドのヘルプ例に日付指定が記載されていなかったため使い物にならないと思い込んでいましたが、ドキュメント側には記載があったので一工夫してみました。
PullRequestも同じ様に取得できるようなので、少し頑張ってみようと思います。